In computing systems that provide multiple computing, network and storage resources, multiple programs can typically run concurrently. Any one of the programs sharing the computing resources can impede the performance of any other program, unless a policy is in place that allows the effective sharing of resources. Many operating systems provide a facility for dynamically monitoring and allocating system resources to individual programs running on the system. Typically, such an operating system will attempt to allocate resources based on the associated priority of each program, as well as the current system load.
However, when virtualization is utilized, it becomes more difficult to balance system resources. A single Virtual Machine Monitor (VMM) can host multiple virtual machines, each with its own operating system and set of applications. The individual virtual machines typically have little knowledge of the other virtual machines running in this environment. The VMM is thus tasked with maintaining balance between the multiple virtual machines running on the shared system resources, but in typical, conventional virtualized computing environments, the ability of the VMM to achieve such a balance is compromised.